package 装饰者模式;
/*
 * 通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多
 * ,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,
 * 我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。
 * 
 * 装饰者与被装饰者拥有共同的超类，继承的目的是继承类型，而不是行为
 */
public class MainClass {
	//测试类，看一下你就会发现，跟java的I/O操作有多么相似  
	public static void main(String[] args) throws Exception {
		Human person = new Person();
		Decorator decorator = new Decorator_two(
				new Decorator_first(new Decorator_zero(person)));
		
		decorator.wearClothes();
		decorator.walkToWhere();
		
	}
}
